home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 023a / pfrm30.zip / PF.DOC < prev    next >
Text File  |  1991-08-29  |  92KB  |  2,071 lines

  1. TO:  INTEGRA COMPUTING, 910 Cobb Place Manor Dr., Marietta, GA  30066    PF 3.0
  2.             Name __________________________________________________________
  3.        Firm Name __________________________________  Phone ________________
  4.          Address __________________________________________________________
  5.             City _________________  State ___  Zip _______  County ________
  6.  # Professionals _____  # Employees ____  Type of Practice ________________
  7. I first heard of Integra Computing from ___________________________________
  8. Prices and availability are subject to change without notice.
  9.  
  10. Send unregistered** copies of the following:
  11. ___ copies of TickleX        at $10 ea                                   $_____
  12. ___ copies of MT-Tracker     at $15 ea                                   $_____
  13. ___ copies of Nifty          at $10 ea                                   $_____
  14. ___ copies of RAMdesk        at $10 ea                                   $_____
  15. ___ copies of ReSearch       at $10 ea                                   $_____
  16. ___ copies of BillPower      at $10 ea                                   $_____
  17. ___ copies of BillPower Plus at $15 ea                                   $_____
  18.  
  19. Send registered** copies of the following:
  20. ___ copies of RAMdesk        at $50  [$25 w/TickleX/BillPower]           $_____
  21. ___ copies of PopForm        at $50  [$25 w/TickleX/BillPower/MT-Tracker]$_____
  22. ___ copies of ReSearch       at $90  [+ $60  EXTRA to get 1 hr support]* $_____
  23. ___ copies of TickleX        at $60  [+ $60  EXTRA to get 1 hr support]* $_____
  24. ___ copies of MT-Tracker     at $90  [+ $110 EXTRA to get 2 hr support]* $_____
  25. ___ copies of BillPower      at $100 [+ $110 EXTRA to get 2 hr support]* $_____
  26. ___ copies of BillPower Plus at $150 [+ $200 EXTRA to get 4 hr support]* $_____
  27.  
  28. To have programs supplied on 3.5" media, enclose $5.00 extra PER PROGRAM $_____
  29. If you don't live in the U.S., Canada, or Mexico, please add $10.00 more $_____
  30.  
  31.                                                              TOTAL ORDER $_____
  32.           ___% Sales Tax for ___________ county, if you're a GA resident $_____
  33.     Please enclose a CHECK or MONEY ORDER in US dollars  --  GRAND TOTAL $_____
  34.     (purchase orders unaccompanied by actual payments won't be accepted)
  35.  
  36. I have read and agreed to all the terms of the Disclaimer found below.
  37.  
  38. _______________________________________                       _________________
  39. SIGNATURE                                                     DATE
  40. *   Telephone support will be provided if you pre-purchase it with  this  order 
  41. form.  Such support must be used within a year.  When you need assistance,  you 
  42. may reach Integra Computing (404-426-5735) most weekdays from 4:00pm to 6:00pm, 
  43. Eastern Time.  Because so much time is required to respond to mailed correspon-
  44. dence,  letters requesting assistance may not be answered.  If you  need  help, 
  45. call  -- don't write.  But please don't even call unless  you've  pre-purchased 
  46. support  with this order form; if you call without having prepaid for  support, 
  47. each call will cost you a minimum of $15, plus $1.50 per minute.
  48. **  Unregistered  software is programmed to  remind  you to  register.   Please 
  49. note that no credit will be  given at the time of registration for the cost  of 
  50. an unregistered copy.
  51.      BILLPOWER,  TICKLEX, MT-TRACKER,  POPFORM, RESEARCH,  RAMDESK,  NIFTY  AND 
  52. THEIR  INSTRUCTIONS ARE PROVIDED  "AS  IS", WITHOUT WARRANTY OF ANY KIND  (INC-
  53. LUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY  AND FITNESS FOR A  PARTICULAR 
  54. PURPOSE).  NO ORAL OR WRITTEN INFORMATION  OR ADVICE  PROVIDED  BY INTEGRA, ITS 
  55. DEALERS,  DISTRIBUTORS, AGENTS,  OR  EMPLOYEES SHALL  CREATE A WARRANTY OF  ANY 
  56. KIND  REGARDING BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, RAMDESK,  OR 
  57. NIFTY, AND  YOU  MAY  NOT RELY UPON SUCH INFORMATION OR  ADVICE.
  58.      NEITHER  INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN  THE   CREATION, 
  59. PRODUCTION,  OR DELIVERY OF BILLPOWER, TICKLEX, MT-TRACKER, POPFORM,  RESEARCH, 
  60. RAMDESK,  OR NIFTY SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,  OR 
  61. INCIDENTAL DAMAGES (INCLUDING, BUT  NOT LIMITED  TO, DAMAGES FOR LOSS OF  BUSI-
  62. NESS PROFITS, BUSINESS  INTERRUPTION,  AND LOSS  OF  BUSINESS INFORMATION)  AR-
  63. ISING FROM THE USE OF  (OR INABILITY TO USE)  BILLPOWER,  TICKLEX,  MT-TRACKER, 
  64. POPFORM, RESEARCH, RAMDESK, OR NIFTY.
  65. -- LICENSE:
  66.      BillPower,  TickleX,  MT-Tracker, PopForm, ReSearch, Nifty,  RAMdesk,  and 
  67. their  documentation are  copyrighted in 1985 to 1990 by R.A. Kelly.   You  may 
  68. use  any program on as many computers as you like, as long as it is never  ins-
  69. talled  with a SERIAL NUMBER (provided to you when you register as a  user)  on 
  70. more than one computer at a time and as long as you do not alter the program in 
  71. any way.  You may distribute any of these programs to potential new users, pro-
  72. vided  that you never divulge your SERIAL NUMBER to anyone, that you charge  no 
  73. fee for the program, and that you do not bundle it with (or use it as an incen-
  74. tive to purchase or  lease) any  other product or service, without the  written 
  75. consent of R.A. Kelly.  All rights not expressly granted above are reserved  in 
  76. R.A. Kelly.
  77.  
  78. -- DISCLAIMER:
  79.      BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, and RAMdesk  may 
  80. contain design and  programming  flaws.  Before using ANY software on a regular 
  81. basis,  try estimating the potential harm that could result from your  reliance 
  82. upon  it.  Please don't use any of these programs unless you're willing to  as-
  83. sume  the  associated risks, such as billing and report inaccuracies  and  data 
  84. loss.
  85.  
  86.      BILLPOWER,   TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY,  RAMDESK,  AND 
  87. THEIR INSTRUCTIONS ARE PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND (INCLUD-
  88. ING  THE  IMPLIED WARRANTIES OF MERCHANTABILITY  AND FITNESS FOR  A  PARTICULAR 
  89. PURPOSE).  NO ORAL OR WRITTEN INFORMATION  OR ADVICE  PROVIDED  BY INTEGRA, ITS 
  90. DEALERS,  DISTRIBUTORS, AGENTS,  OR  EMPLOYEES SHALL  CREATE A WARRANTY OF  ANY 
  91. KIND  REGARDING  BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH,  NIFTY,  OR 
  92. RAMDESK,  AND  YOU  MAY  NOT RELY UPON SUCH INFORMATION OR  ADVICE.    USE   OF  
  93. BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY,OR RAMDESK IS ENTIRELY 
  94. AT YOUR OWN RISK. 
  95.      NEITHER  INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN  THE   CREATION, 
  96. PRODUCTION,  OR DELIVERY OF BILLPOWER, TICKLEX, MT-TRACKER, POPFORM,  RESEARCH, 
  97. NIFTY,  OR RAMDESK SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL,  OR 
  98. INCIDENTAL DAMAGES (INCLUDING, BUT  NOT LIMITED  TO, DAMAGES FOR LOSS OF  BUSI-
  99. NESS  PROFITS,  BUSINESS  INTERRUPTION,  AND LOSS   OF   BUSINESS  INFORMATION)  
  100. ARISING FROM THE USE OF (OR INABILITY TO  USE) BILLPOWER,  TICKLEX, MT-TRACKER, 
  101. POPFORM, RESEARCH, NIFTY, OR RAMDESK, EVEN THOUGH INTEGRA MAY BE ADVISED  THAT
  102. SUCH DAMAGES ARE POSSIBLE.
  103. -- AGREEMENT:
  104.      As used in this Agreement, the terms "BillPower" ,"TickleX", "MT-Tracker", 
  105. "PopForm",  "ReSearch", "Nifty", and "RAMdesk", if not followed by a series  or 
  106. version  designation, mean any version or series of BillPower, BillPower  Plus, 
  107. TickleX, MT-Tracker, PopForm, ReSearch,  Nifty, or  RAMdesk provided to you now
  108. or in the future.
  109.      Your   attempt to use BillPower, TickleX, MT-Tracker,  PopForm,  ReSearch, 
  110. Nifty,  or RAMdesk constitutes your  acceptance of the terms set forth  in  the 
  111. foregoing LICENSE and DISCLAIMER (which are incorporated  into this Agreement).  
  112. Your attempt to use BillPower,  TickleX, MT-Tracker, PopForm, ReSearch,  Nifty, 
  113. or  RAMdesk also constitutes your agreement that if you bring any legal  action  
  114. relating  to BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, or  RAM-
  115. desk, 1) your sole remedy for the damages for which any defendant is found lia-
  116. ble (including direct, indirect, incidental and consequential damages) will  be 
  117. the recovery of whatever you paid to register as a  user of the program, and 2) 
  118. you  will pay all defendants' attorneys fees  and other legal costs if  you  do 
  119. not prevail on all claims made in your pleadings.
  120.      The  terms of this Agreement are governed by Georgia law.  If any of  this 
  121. Agreement's  terms shall be held invalid to any extent, the remainder  of  this 
  122. Agreement shall be unaffected by such invalidity.
  123.  
  124.      THE ABOVE PARAGRAPHS CONSTITUTE THE ENTIRE AGREEMENT BETWEEN YOU AND INTE-
  125. GRA.  NO ORAL OR WRITTEN COMMUNICATION, INFORMATION, OR ADVICE FROM ANY  SOURCE  
  126. MAY ALTER THE AGREEMENT AS SET FORTH ABOVE.
  127.      SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR OF LIABIL-
  128. ITY  FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO SOME OF THE  ABOVE  EXCLUSIONS  
  129. AND  LIMITATIONS  MAY NOT APPLY TO YOU.  YOU MAY HAVE OTHER  RIGHTS  WHICH  MAY 
  130. VARY FROM STATE TO STATE.
  131.  
  132.  
  133.  
  134.  
  135.                                   POPFORM
  136.                                  (ver 3.0)
  137.                              TABLE OF CONTENTS
  138.  
  139.  
  140.  
  141.     INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  142.  
  143.     USING POPFORM  . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  144.  
  145.     FORMS OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  146.  
  147.     THE TILDE CODES. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  148.  
  149.     PUTTING IT ALL TOGETHER  . . . . . . . . . . . . . . . . . . . . . . 15
  150.  
  151.     FOR PROGRAMMERS ONLY . . . . . . . . . . . . . . . . . . . . . . . . 26
  152.  
  153.     PREPARING LONG FORMS . . . . . . . . . . . . . . . . . . . . . . . . 30
  154.  
  155.     COMMON ERRORS  . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
  156.  
  157.     CUSTOMIZING POPFORM  . . . . . . . . . . . . . . . . . . . . . . . . 32
  158.  
  159.  
  160.  
  161.  
  162.                                    POPFORM
  163.                                  INSTRUCTIONS
  164.  
  165.  
  166.             If you're using an unregistered copy of the program, 
  167.             it will begin to beep at you in several weeks, reminding 
  168.             you that it's time to register.  Don't worry -- no data 
  169.             will be destroyed, and you'll always be able to use the 
  170.             program, despite the fact that you delay registering. 
  171.  
  172.  
  173.  
  174.           PopForm is a ram-resident program that can be called up from 
  175.      within nearly any application, grab information from the screen, and 
  176.      merge it into a form that's being sent either to a printer or to a 
  177.      disk file.  
  178.  
  179.            PopForm's far more than just the perfect label/envelope printing 
  180.      tool.  You see, unlike the typical single-purpose label or envelope 
  181.      printer, PopForm is actually programmable.  It can execute subrou-
  182.      tines, perform comparisons and conditional procedures, and much, much 
  183.      more.  It'll even do simple page formatting, including margins all 
  184.      around, word wrap, page numbers, and one-line headers and footers.  
  185.  
  186.           With this program, you can prepare forms of nearly ANY complex-
  187.      ity, as long as the information to be plugged into them can be found 
  188.      on your computer's screen.  And, of course, provided that you're wil-
  189.      ling to grasp and implement some basic programming concepts.  If you 
  190.      have simple needs, you'll find PopForm a simple dream-come-true.  But 
  191.      it's nice to know that it also has the power to do heavy-duty chores, 
  192.      if you'll just take the time to do some programming and experimenting.
  193.  
  194.           Since PopForm can deal with numerical and string variables, it it 
  195.      can also be useful as you just browse through a database.  When you 
  196.      come to a screen containing information you'd like to record, just 
  197.      call up PopForm and select a "form" you've prepared that pulls sel-
  198.      ected data from the screen and sends it to a disk file, along with the 
  199.      running total for some important item.  When you've finished your 
  200.      browsing, you can either print the disk file or edit it with your word 
  201.      processor. 
  202.  
  203.  
  204.      INTRODUCTION
  205.  
  206.           All modern word processors have the ability to prepare forms.  
  207.      They can also automate the preparation of these forms through the use 
  208.      of merge-printing.  For instance, you can have your word processor 
  209.      read a list of addresses while it's printing a "blank" mailing label.  
  210.      As it does so, it will merge the address information into the blank 
  211.      form, resulting in a printed label containing an address. 
  212.  
  213.           This merge-printing function is a tremendous time saver, but it 
  214.  
  215.  
  216. INTRODUCTION                         4
  217.  
  218.  
  219.  
  220.  
  221.      is useful only if the blank form and the information to be merged are 
  222.      both accessible by your word processor.  And, of course, your word 
  223.      processor's merge-printing function is available only if you're using 
  224.      the word processor.
  225.  
  226.           But what if it's your data base (or some other program), not your 
  227.      word processor, that contains the information you want merged into a 
  228.      form?  Wouldn't it be nice if you could merge any information shown on 
  229.      your screen into forms that you can access on a pop-up basis?
  230.  
  231.           That's exactly what PopForm does.  It's a memory-resident program 
  232.      that will read any industry-standard ASCII file and send it to your 
  233.      printer, no matter what database, spreadsheet, word processor, etc., 
  234.      you may be using at the time.  And if the file being printed contains 
  235.      appropriate coding, PopForm will pick information right off your 
  236.      screen and merge it into the stream of data going to your printer.  
  237.      Hence, with PopForm, your SCREEN, not a disk file, provides the infor-
  238.      mation be merged into the form being printed.
  239.  
  240.           Let's say you have a canned letter that you'd like to send to 
  241.      a few of the hundreds of people whose vital information is kept in a 
  242.      data base file.  Just enter the data base and conduct a search for the 
  243.      records you think you may want.  As each person's record comes to the 
  244.      screen, you can decide whether you want to send the canned letter to 
  245.      him.  If so, press PopForm's hotkey, make sure that the correct form 
  246.      (the canned letter) is being accessed, and print it.  If you'd 
  247.      also/instead like to print a mailing label or a check, just select the 
  248.      appropriate form and merge-print it as well.  And if you have differ-
  249.      ent pre-printed forms already loaded into different printers, you can 
  250.      actually have PopForm automatically send each form it prepares to the 
  251.      proper printer.
  252.  
  253.           Let's assume that you're using BillPower Plus, Integra Comput-
  254.      ing's time/billing/bookkeeping program.  It includes a "People" module 
  255.      in which you can store thousands of names, addresses, birthdays, phone 
  256.      numbers, and lots of miscellaneous information.  Every person's data 
  257.      screen has a similar layout:  all the headings are the same, but the 
  258.      actual data differs from person to person.  Because each record's 
  259.      screen layout is predictable, you could easily write any number of 
  260.      forms to be used with the data contained in the BillPower's "People" 
  261.      module.  While a single record is being displayed, you could prepare a 
  262.      canned letter, a mailing label/envelope, and/or any other form you 
  263.      desire.
  264.  
  265.           In order to get you started, as well as to provide examples which 
  266.      you can study, PopForm is accompanied by several forms, among which 
  267.      are: 
  268.                a very simple form that demonstrates the program's 
  269.                  basic principles (LABEL.FRM);
  270.                a somewhat more complex form that produces envelopes 
  271.                  on HP Laser printers (HP-ENV.FRM);
  272.                a rather complex airbill form that demonstrates the use 
  273.  
  274.  
  275. INTRODUCTION                         5
  276.  
  277.  
  278.  
  279.  
  280.                  of "IF" and "GOTO" conditional processing (FEDEX.FRM);
  281.                a form that demonstrates PF's ability to do page format-
  282.                  ting (WILL.FRM);
  283.                a form that demonstrates PF's use in keeping up with 
  284.                  running totals as you browse through a data base
  285.                  (TOTALS.FRM).
  286.  
  287.      You'll also find a simple text editor (FORMED.EXE) that may be useful 
  288.      in designing simple forms.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. INTRODUCTION                         6
  335.  
  336.  
  337.  
  338.  
  339.      USING POPFORM
  340.  
  341.           You should install PopForm into its own POPFORM directory on your 
  342.      hard disk.
  343.  
  344.           To use the program, you should first log into the directory con-
  345.      taining PopForm.  The reason you need to be in this directory is that 
  346.      PopForm will always look to the directory from which it's installed 
  347.      when it needs to find its forms.  No matter what directory you may 
  348.      subsequently be logged into when you're running other applications, 
  349.      PopForm will always look for its forms in the subdirectory from which 
  350.      it was loaded.
  351.  
  352.           Once you're in the correct directory, load the program by typing 
  353.      "pf" at the DOS prompt.  Once the program is in memory, you'll be re-
  354.      turned to the DOS prompt.  By default, the program saves memory by 
  355.      swapping itself to and from disk when you call it up and escape from 
  356.      it.  This takes a few seconds every time you press the hotkey.  But if 
  357.      you'd rather save time at the expense of more memory usage, you may 
  358.      install the program ty typing "pf ns" at the DOS prompt.  The prog-
  359.      ram's response will be instantaneous when installed in this fashion, 
  360.      but it will take up about 60K of memory, as compared to about 7K when 
  361.      the default disk-swapping is employed.
  362.  
  363.           Once the program's installed, it may be called up from within any 
  364.      application.  To do so, you need simply press the hotkey (ALT-F, un-
  365.      less you customize the program to recognize another).  PopForm will 
  366.      then display the names of all forms available for printing.  Type in 
  367.      the name of one, press the Enter key, and that form will be sent to 
  368.      the printer.  PopForm will then disappear from the screen until you 
  369.      invoke it again with the hotkey.
  370.  
  371.           The next time you press the hotkey, PopForm will remember the 
  372.      last form it printed.  To re-print that form, just press the Enter 
  373.      key.  If you need to change the form, do that first, and THEN press 
  374.      the Enter key.
  375.  
  376.           By default, PopForm assumes that you'll be sending your form to a 
  377.      printer attached to your computer's LPT1 port.  If your printer is 
  378.      attached to LPT2, you may press ALT-P to change the printer port.  
  379.      When you do, you'll notice that the port designation in the upper-
  380.      right of the PopForm box will change.  If you press ALT-P a second 
  381.      time, PopForm will be set to send the form to a disk file named "PCUE" 
  382.      (PrinterCUE).  Pressing ALT-P a third time will tell PopForm to send 
  383.      the form to a disk file named "TEXT" (you may subsequently use your 
  384.      word processor to edit this file and send it to a printer).  Pressing 
  385.      ALT-P a fourth time completes the circle and brings you back to LPT1. 
  386.  
  387.           If you've been sending a series of forms to the Printer Cue 
  388.      (PCUE), you may easily have that file printed just by pressing Ctrl-P.  
  389.      But before you press Ctrl-P, make sure that you've informed PopForm to 
  390.      stop sending its output to PCUE.  It doesn't make sense to send PCUE's 
  391.  
  392.  
  393. USING POPFORM                            7
  394.  
  395.  
  396.  
  397.  
  398.      contents to itself, so press ALT-P until the appropriate printer (LPT1 
  399.      or LPT2) appears in the upper-right.  THEN, press Ctrl-P to send the 
  400.      contents of the printer cue to the printer.
  401.  
  402.           To exit PopForm and return to your application without printing a 
  403.      form, press the ESC key.  To actually UNLOAD PopForm from memory (so 
  404.      that it will no longer be accessible by your pressing the hotkey), 
  405.      press ALT-X.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452. USING POPFORM                            8
  453.  
  454.  
  455.  
  456.  
  457.      FORMS OVERVIEW
  458.  
  459.           USING PopForm is a snap, but DESIGNING FORMS will be another mat-
  460.      ter until you become accustomed to it. 
  461.  
  462.           All forms used by PopForm must be located in the POPFORM direc-
  463.      tory (or whatever other directory you place PopForm into).  And each 
  464.      form must have the ".FRM" file name extension (eg: "label.frm", "let-
  465.      ter.frm", "check.frm").  
  466.  
  467.           Each form must have been prepared as an industry-standard ASCII 
  468.      file.  Most modern word processors can produce this type of file, but 
  469.      generally not unless you specifically request it.  If you don't speci-
  470.      fy an ASCII file, your word processor is likely to produce a file in 
  471.      it's proprietary format, which is unlike that used by all other word 
  472.      processors.  If you specify an ASCII file, however, PopForm and most 
  473.      other word processors will be able to read it.  So study your word 
  474.      processor's manual to learn how to produce ASCII files.
  475.  
  476.           Just in case your word processor makes it difficult for you to 
  477.      prepare ASCII files, PopForm is accompanied by a relatively simple 
  478.      text editor called FORMED.  It's handy for making small forms, but 
  479.      you'll probably need a full-featured word processor for the big ones.
  480.  
  481.           Each form will have several spots where you will want to substi-
  482.      tute information from the screen.  At each such spot, you must provide 
  483.      an appropriate code.  As PopForm reads the form file, it will encoun-
  484.      ter these codes and merge information from the screen at those spots.
  485.  
  486.           A PopForm code always BEGINS and ENDS with a tilde (~).  There 
  487.      are several types of codes that may be placed between the two tildes, 
  488.      the most commonly used of which is the Screen Specification.  When 
  489.      PopForm encounters a Screen Specification, it will read the screen 
  490.      positions specified and perform whatever process the tilde code dir-
  491.      ects.  If the tilde code contains NOTHING BUT a Screen Specification 
  492.      (that is, no other directive except, perhaps, a Write Length), PopForm 
  493.      will simply send the data extracted from the screen to the printer.  
  494.      If, however, the tilde code directs PopForm to do some sort of compar-
  495.      ison or mathematical operation with the the screen data, the approp-
  496.      riate operation will be performed without anything being sent to the 
  497.      printer.  So, if you want to send screen data to the printer, all you 
  498.      have to do is to place a Screen Specification between two tildes.  If 
  499.      the tilde code has any other directives (other than a Write Length), 
  500.      nothing will be written. 
  501.  
  502.           A Screen Specification is enclosed within parentheses, and it 
  503.      consists of two parameters, each separated by a comma:  1) either a 
  504.      keyword or a screen location, and 2) the Read Length (number of char-
  505.      acters to read from the screen).  If the Read Length is specified as 
  506.      zero, (or omitted altogether) PopForm will read to the end of the 
  507.      FIRST WORD, regardless of its length, and then stop reading.  
  508.      Examples:
  509.  
  510.  
  511. FORMS OVERVIEW                           9
  512.  
  513.  
  514.  
  515.  
  516.  
  517.                 ~("Name: ",20)~    tells PopForm to find "Name: " on the
  518.                                    screen, read the next 20 characters, and
  519.                                    print them.
  520.                 ~("Name: ")~       tells PopForm to find "Name: " on the
  521.                                    screen, read the next word, and print it.
  522.  
  523.           Another type of data that is frequently used is the Write Length, 
  524.      which informs PopForm how many characters to write to the printer.  It 
  525.      may be used in conjunction with a Screen Specification or any other 
  526.      tilde code that will result in something being sent to the printer.  
  527.      If the Write Length is smaller than the length of the information 
  528.      to be written, that information will be truncated.  If the Write 
  529.      Length is greater than the data length, PopForm will add extra spaces 
  530.      (padding) at the end of the data.  A write length of zero (or no Write 
  531.      Length specification at all) will tell PopForm to write exactly as 
  532.      many characters as are contained in the data to be written, no more 
  533.      and no less.
  534.  
  535.           A Write Length is always enclosed in square brackets.  If it's 
  536.      used, it should be placed within the tilde code before the the item 
  537.      specified to be written, such as a Screen Specification (which, remem-
  538.      ber, is placed within parentheses, not brackets). 
  539.  
  540.             ~[30]("Name: ",20)~    tells PopForm to find "Name: " on the
  541.                                    screen, read the next 20 characters, 
  542.                                    print them, and then add another 10 
  543.                                    blank spaces.
  544.  
  545.           Take a look at the LABEL.FRM file provided with PopForm.  It's a 
  546.      very simple example of the use of screen specifications.
  547.  
  548.  
  549.      - Screen layouts 
  550.  
  551.           Of course, Screen Specifications are useful only if you know the 
  552.      screen arrangement with which a particular form will be used.  There-
  553.      fore, each form you prepare with your word processor will assume a 
  554.      certain screen layout.  You can have a separate form for each type of 
  555.      layout you anticipate being displayed at the time the form is needed.  
  556.      Similarly, you can have many types of forms set up for each individual 
  557.      layout.
  558.  
  559.           Some sample forms are provided with PopForm.  Also provided is a 
  560.      file called TESTDATA.  Each of the provided forms (except the will) is 
  561.      designed to work with TESTDATA, which may be viewed as a sample data 
  562.      base screen.  If you'll look at TESTDATA, you'll see that information 
  563.      is arranged haphazardly on the screen.  This unusual layout is pro-
  564.      vided just to demonstrate that PopForm will find data, no matter where 
  565.      it has been strewn onto the screen.  If you're likely to use PopForm 
  566.      with a number of different main applications, you'll appreciate the 
  567.      fact that PopForm will find the data you want, no matter where it's 
  568.  
  569.  
  570. FORMS OVERVIEW                           10
  571.  
  572.  
  573.  
  574.  
  575.      displayed.
  576.  
  577.           Now look at CHECK.FRM.  This is a check that has been designed 
  578.      for use with Epson-compatible printers.  One of that file's codes is
  579.  
  580.                                ~[25]("payee: ",25)~
  581.  
  582.           This tilde code contains both a Write Length and a Screen Specif-
  583.      ication.  It tells PopForm to look for the character sequence, 
  584.      "payee: ", on the screen.  When it finds that sequence, PopForm should 
  585.      then read the NEXT 25 characters and then print 25 (all of them, in 
  586.      this case) of those characters before reading and printing anything 
  587.      else from the CHECK.FRM file.  If your screen happens to be displaying 
  588.      anything (such as TESTDATA) with the sequence, "payee: ", the approp-
  589.      riate substitution will take place.
  590.  
  591.           Remember, unlike other types of data that can be placed within 
  592.      tilde codes, Screen Specifications are enclosed in parentheses, and 
  593.      Write Lengths are enclosed within square brackets.  Examples: 
  594.  
  595.           ~"payee: ",25~      NO - Screen Specifications must be in parens
  596.           ~("payee: ",10)~    ok - looks for "payee: ", reads 10 charac-     
  597.                                    ters, writes all 10, since no Write
  598.                                    Length given
  599.           ~15("payee: ",25)~  NO - Write Lengths must be in brackets
  600.           ~[9]("payee: ",25)~ ok - reads 25 characters, writes 9 of them
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629. FORMS OVERVIEW                           11
  630.  
  631.  
  632.  
  633.  
  634.      THE TILDE CODES
  635.  
  636.           Though the Screen Specifications and Write Lengths covered in the 
  637.      last section are the codes you will most frequently use, there are 
  638.      other things you may specify with tilde codes.  Each will be described 
  639.      in detail later, but here's a brief explanation of each:
  640.  
  641.                DATE   Read today's date from the computer's memory, not 
  642.                         the screen, and send it to the printer.
  643.             WEEKDAY   Read today's weekday from the computer's memory, 
  644.                         not the screen, and send it to the printer.
  645.                TIME   Read the current time from the computer's memory, 
  646.                         not the screen, and send it to the printer.
  647.             NEWPAGE   Tells PopForm to send a form feed instruction to the
  648.                         printer, so that a new sheet of paper will be fed.
  649.     MARGINS t,l,b,r   Sets each printed page's top, left, bottom, and right 
  650.                         margins to t,l,b, and r, respectively.
  651.              HD x,y   PopForm will place header y at the top of each page
  652.                         it prints and then print x blank lines. 
  653.              FT x,y   PopForm will place footer y at the bottom of each page
  654.                         it prints and ensure that there are x blank lines
  655.                         between it and the preceding text.
  656.             WRAP ON   Turns word wrap on.  When ON, Popform will ignore all
  657.                         carriage returns in the form being printed and 
  658.                         determine for itself when to issue a carriage return.
  659.            WRAP OFF   Turn word wrap off.
  660.                   <   ~<~ forces a carriage return and line feed, whether
  661.                         or not word wrap is on.
  662.                   +   If ~+~ is the last thing on a line, it tells PopForm 
  663.                         to join that line with the following one.  No line 
  664.                         feed or carriage return will be sent to the printer 
  665.                         between these two lines.
  666.                   \   If ~\~ is the last thing on a line, it tells Popform 
  667.                         that the following line is to overprint the current
  668.                         one.  Therefore, a carriage return, but no line
  669.                         feed, will be sent to the printer between the two
  670.                         lines.
  671.            CENTER x   Tells PopForm to center all items picked from the 
  672.                         screen.  Each item will be centered on column x.
  673.                         Centering will continue until a CENTER OFF code 
  674.                         is encountered.
  675.          CENTER OFF   Turns off centering.   
  676.         PRINTCODE x   Send printer control decimal code x to the printer.
  677.                C-cc   Go to column cc on the row where the cursor is 
  678.                         currently located and start reading (cc must be
  679.                         2 digits). Whatever is found there will be printed.
  680.                R-rr   Go to row rr on the screen and start reading at 
  681.                         the column where the cursor is presently located
  682.                         (rr must be 2 digits).  Whatever is found there
  683.                         will be printed.
  684.             RC-rrcc   Go to row rr and column cc and start reading (rr
  685.                         and cc must each be 2-digit numbers).  Whatever is
  686.  
  687.  
  688. THE TILDE CODES                          12
  689.  
  690.  
  691.  
  692.  
  693.                         found there will be printed.
  694.           WRITELN x   Display message x in PopForm's box.  If nothing is 
  695.                         already displayed, the message will be located on 
  696.                         the top line; otherwise, it will be put onto the 
  697.                         second line.  Only two lines can be displayed at 
  698.                         one time.
  699.             INPUT x   Prompt the user for keyboard input by displaying                    
  700.                         message x.  Whatever the user keys in will be 
  701.                         sent to the printer, except for a carriage return.
  702.               BLOCK  Allow the user to "block off" a portion of the current
  703.                         screen and send that block's text to the printer.
  704.         NEWSCREEN x  Tells PopForm to display message x, wait for you to 
  705.                         press a key, and then temporarily exit.  This allows 
  706.                         you to call up another screen of data before for 
  707.                         the current form to use.  When you re-enter PopForm, 
  708.                         it will pick up where it had left off just before 
  709.                         exiting.  If x is missing, PopForm will exit without 
  710.                         displaying a message.
  711.             LABEL x   Marks a position within the file.  "x" is the 
  712.                         number or short word you wish to assign to the 
  713.                         position.
  714.              GOTO x   Stop printing and skip to the position in the form
  715.                         defined by label x.  Then, begin printing again.
  716.             GOSUB x   Like GOTO, but will cause PopForm to automatically
  717.             RETURN     pick up where it left off before performing the 
  718.                         subroutine beginning at label x and ending with a
  719.                         RETURN command.
  720.       DO              Defines a DO loop that contains everything between
  721.       UNTIL COUNT x     the "DO" and "UNTIL COUNT x" statements.  The
  722.                         DO loop will be repeated x times.
  723.                NUMx   PopForm keeps 9 numerical variables to which you 
  724.                         may assign values.  They are called NUM1...NUM9.  
  725.                         Each always starts with a value of zero when a new 
  726.                         form is being prepared, but you may alter them 
  727.                         through addition, subtraction, multiplication, 
  728.                         division, and clearing ( +, -, *, /, cc ).
  729.                WRDx   PopForm keeps 9 alphanumeric variables to which you 
  730.                         may assign characters strings.  They are called 
  731.                         WRD1...WRD9.  Each always starts out blank when a 
  732.                         new form is being prepared, but you may alter them 
  733.                         through addition, subtraction, and clearing 
  734.                         ( +, -, cc ).
  735.                 ESC   This is the character that results when the ESC key
  736.                         is pressed.  It may be used when making comparisons
  737.                         in an IF statement (eg: IF the ESC key is pressed, 
  738.                         then do so-and-so).
  739.          DECIMALS x   Defines the precision with which each NUM variable will
  740.                         be printed.  x is the number of decimal places 
  741.                         desired.
  742.            SENDTO x   Send the form to a disk file named x, instead of to 
  743.                         your primary printer.  If you want to send the form 
  744.                         to another PRINTER (not a file), x should be "LPT1",
  745.  
  746.  
  747. THE TILDE CODES                          13
  748.  
  749.  
  750.  
  751.  
  752.                         "LPT2", "LPT3", or "LPT4".
  753.              FILE x   Go to disk file x and print it.  The file must be 
  754.                         located in the same directory as PopForm's other 
  755.                         form files.  Be sure to specify a full file name, 
  756.                         including the extension.
  757.              IF x >   If number x is greater than the number defined by the 
  758.                         following keyword (or screen coordinates), then 
  759.                         execute the next tilde code sequence.  Otherwise, 
  760.                         DO NOT execute the next tilde code sequence.
  761.              IF x <   If number x is less than the number defined by the 
  762.                         following keyword (or screen coordinates), then 
  763.                         execute the next tilde code sequence.  Otherwise, 
  764.                         DO NOT execute the next tilde code sequence.
  765.              IF x =   If phrase x is contained within the phrase defined by 
  766.                         the following keyword (or screen coordinates), then 
  767.                         execute the next tilde code sequence.  OR, if 
  768.                         number x is the equivalent of the number defined by 
  769.                         the following keyword (or screen coordinates), then 
  770.                         execute next tilde code. 
  771.             IF x <>   If phrase x is not contained within the phrase defined 
  772.                         by the following keyword (or screen coordinates), 
  773.                         then execute the next tilde code sequence.  OR, if 
  774.                         number x is not the equivalent of the number defined
  775.                         by the following keyword (or screen coordinates), 
  776.                         then execute next tilde code. 
  777.     IF x ^ a,b,c...   If number x equals number a, b, or c, etc., then 
  778.                         execute next tilde code. 
  779.     IF x | a,b,c...   If number x does not equal number a, b, or c, etc., 
  780.                         then execute next tilde code. 
  781.               { x }   A tilde code containing nothing but comments enclosed 
  782.                         within curly brackets will be ignored by PopForm.
  783.                         You may use this feature to document your forms,
  784.                         without having to worry about your comments' being 
  785.                         printed. 
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806. THE TILDE CODES                          14
  807.  
  808.  
  809.  
  810.  
  811.      PUTTING IT ALL TOGETHER
  812.  
  813.  
  814.      - In General
  815.  
  816.           A simple form can be slapped together in no time.  A mailing 
  817.      label is a good example.  As your needs become more complex, however, 
  818.      you'll find yourself using PopForm's programming features to flash 
  819.      prompts onto the screen, compare screen data with other information, 
  820.      perform subroutines, etc.  A complex form could conceivably take many 
  821.      hours (even days) to develop.  Telling PopForm when to print what, and 
  822.      on which line to print it may be tricky.  But it CAN be done with some 
  823.      perseverance.  So please study the remainder of this manual and de-
  824.      velop some practice forms, so that you can experiment with each of 
  825.      PopForm's specialized codes.  Good luck.  
  826.  
  827.  
  828.      - Keywords and Screen Locations
  829.  
  830.           If the data you want to insert in your form always follows a par-
  831.      ticular keyword, screen coordinates aren't important;  PopForm will 
  832.      find the data, no matter where it may appear on the screen if you 
  833.      supply it with the keyword (eg: "Street: ").  
  834.  
  835.           PopForm is not case sensitive when it's scanning the screen for a 
  836.      keyword you've supplied.  That is, capitalization doesn't make any 
  837.      difference to PopForm when it's looking for a keyword.  But what it 
  838.      sends to the printer will be EXACTLY what is found on the screen fol-
  839.      lowing the keyword.
  840.  
  841.           An alternative to a keyword search is to specify the exact screen 
  842.      coordinates where the data you want may be found.  Screen coordinate 
  843.      numbering begins in the upper left corner, whose coordinate is "0101" 
  844.      (row 01, column 01).
  845.  
  846.           Let's assume that you have your data arranged in an array (a 
  847.      spreadsheet, for instance), and that there are no predictable key-
  848.      words.  Wouldn't it be nice to be able to move the cursor to a speci-
  849.      fic row and merge the data on that row into your form?  
  850.  
  851.           The "C-cc" code does just that.  The "cc" portion of the code 
  852.      specifies the COLUMN (two digits, please) at which the data you want 
  853.      to merge begins.  The ROW is defined as that where the cursor was lo-
  854.      cated just before popping into PopForm.  Take a look at RPRTCARD.FRM, 
  855.      a simple report card whose data also happens to be taken from the 
  856.      TESTDATA file.  You'll note that the "Grade" item is on the line 
  857.      following "Student".  But when it prints out, you'll notice that both 
  858.      items are on the same line (see the "line overwrites" discussion in a 
  859.      subsequent section).
  860.  
  861.           To use the RPRTCARD form, use your word processor to bring TEST-
  862.      DATA to the screen.  Then cursor down to any of the lines containing 
  863.  
  864.  
  865. PUTTING IT ALL TOGETHER                  15
  866.  
  867.  
  868.  
  869.  
  870.      student names.  Pop into PopForm, select the RPRTCARD form, and press 
  871.      the Enter Key.  That line's data will be merged into the form.  Select 
  872.      another student, and try again, if you like.
  873.  
  874.           The "R-rr" code works the same sort of magic for rows.  Here, 
  875.      the "rr" portion of the code specifies the ROW (two digits) at which 
  876.      the data you want to merge begins.  The COLUMN is defined as that 
  877.      where the cursor was located just before popping into PopForm.
  878.  
  879.           What if you want to specify an exact row and column, neither of 
  880.      which depends upon cursor location?  Answer: the "RC-rrcc" code.  
  881.      Here, both the row ("rr") AND column ("cc") are specified, each in two 
  882.      digits.
  883.  
  884.           Remember, Read and Write Lengths of zero have special meanings.  
  885.      A Read Length of zero normally tells PopForm that the number of char-
  886.      acters to be read is not important, and that PopForm should, instead, 
  887.      read to the end of the FIRST WORD, regardless of its length.  A Write 
  888.      Length of zero tells PopForm to print the string of characters you 
  889.      desire (such as a date found in the computer's memory, or several 
  890.      words picked from the screen), no more and no less.
  891.  
  892.  
  893.      - Line Overwriting and Line Joining  (VERY, VERY IMPORTANT!)
  894.  
  895.           These two features are invaluable.  Read, practice, and master 
  896.      the contents of this section!
  897.  
  898.           As you prepare forms with your word processor, you'll find that 
  899.      estimating the proper spacing is sometimes difficult, especially if 
  900.      you intend to be printing upon typeset paper.
  901.  
  902.           You may find that the tilde codes you enter are so long that they 
  903.      distort the appearance of the form on your screen.  Assume, for ins-
  904.      tance, that the data you want printed is only 6 characters long, but 
  905.      that it takes 13 characters to define it with a tilde code.  In this 
  906.      case, everything to the right of your code will appear 7 spaces out of 
  907.      alignment.  PopForm doesn't care, but you may have difficulty visual-
  908.      izing the form as you're constructing it.
  909.  
  910.           You'll notice that CHECK.FRM has a few lines that have missing 
  911.      border characters.  Those lines are to be combined with the lines 
  912.      immediately preceding or following them.  How?  Line Joining and Line 
  913.      Overwriting.  Line Overwriting allows your printer to over-print two 
  914.      or more lines of data on the same physical line on the paper.  Though 
  915.      your screen may show 2 or three separate lines, Line Overwriting al-
  916.      lows them all to be sent to the SAME line on your printer. 
  917.  
  918.           Line Overwriting may be imposed upon PopForm by the placing a 
  919.      ~\~ code at the end of a line.  When PopForm encounters ~\~ at the end 
  920.      of a line, it will immediately issue a carriage return, but no line 
  921.      feed, to the printer.  That will cause the following line to overwrite 
  922.  
  923.  
  924. PUTTING IT ALL TOGETHER                  16
  925.  
  926.  
  927.  
  928.  
  929.      the line containing ~\~. 
  930.  
  931.           When trying out complex forms that you're preparing, you'll often 
  932.      find that the printout contains blank lines that you hadn't anti-
  933.      cipated.  All you have to do is to place a ~\~ at the end of the line 
  934.      preceding an unwanted blank.  That will inform PopForm that a carriage 
  935.      return, but no line feed should be issued at the end of that line.
  936.  
  937.           If the form you're creating requires lines longer than 80 
  938.      characters, but your word processor or text editor doesn't permit 
  939.      them (as is the case with the FORMED program provided with PopForm), 
  940.      you'll need to "double up" by using the ~+~ code.  If ~+~ is encoun-
  941.      tered at the end of a line, PopForm will join that line with the one 
  942.      immediately following it.  As your form is being printed, PopForm will 
  943.      send NEITHER a line feed NOR carriage return after a line ending with 
  944.      ~+~.  Hence, the following line will be printed adjacent to (not over) 
  945.      the one containing ~+~.  Be sure never to use the ~+~ code in the mid-
  946.      dle of another code.  Though one tilde code may immediately follow 
  947.      another, PopForm does not allow codes-within-codes.
  948.  
  949.           By the way, you may FORCE PopForm to issue BOTH a carriage return 
  950.      AND a line feed if you place a ~<~ at the end of a line.  This feature 
  951.      is generally useful only if you're using Word Wrap (covered later).
  952.  
  953.           NOTE:
  954.                When using your word processor to look at a disk file 
  955.           created by PopForm, you may notice what appear to be many 
  956.           blank lines that you hadn't "programmed".  In many cases, 
  957.           these may not really be blank lines at all; your word pro-
  958.           cessor may simply be displaying a blank line wherever the 
  959.           file has a carriage return, even though that carriage return 
  960.           MIGHT NOT be accompanied by a line feed.  Don't worry.  When 
  961.           the file is actually printed, it'll probably look much bet-
  962.           ter.  Remember that the forms you create with PopForm might 
  963.           make liberal use of carriage returns without line feeds. 
  964.           
  965.  
  966.      - Missing Data
  967.  
  968.           Sometimes the data you're looking for won't be anywhere on the 
  969.      screen.  Look at LABEL.FRM, and you'll see that it consists of four 
  970.      name and address lines.  The third line instructs PopForm to look to 
  971.      the screen for the sequence, "Street: ".  That sequence, however, 
  972.      won't be followed by anything if TESTDATA is being displayed.  You 
  973.      might, therefore, expect PopForm to print LABEL.FRM with a blank third 
  974.      line.  
  975.  
  976.           But you'd probably prefer that PopForm omit the third line en-
  977.      tirely when the information being sought for inclusion thereon is mis-
  978.      sing.  Well, that's exactly what the program will do in this case.  
  979.      Why?  Because PopForm sees that next character following the keyword 
  980.      specification is "\".  Whenever PopForm encounters a "\" right after a 
  981.  
  982.  
  983. PUTTING IT ALL TOGETHER                  17
  984.  
  985.  
  986.  
  987.  
  988.      keyword or a screen coordinate, the program primes itself NOT to print 
  989.      the line if it cannot find what it's been told to find on the screen.   
  990.      Examples:
  991.  
  992.           ~("payee: ",10)~     - will send a line feed to the printer,
  993.                                  whether or not it finds something on the
  994.                                  screen immediately after "payee: "
  995.           ~("payee: "\,10)~    - will send a line feed to the printer,
  996.                                  ONLY IF PopForm finds something on the
  997.                                  screen immediately after "payee: "
  998.           ~(RC-0513\,10)~      - will send a line feed to the printer,
  999.                                  ONLY IF PopForm finds something at
  1000.                                  row 05, column 13.
  1001.  
  1002.           For each line skipped while printing the body of a form, an extra 
  1003.      line will be inserted at the end, thus ensuring correct spacing bet-
  1004.      ween successive forms.
  1005.  
  1006.           It makes sense to use "\" only when there is only one item on a 
  1007.      form line, that item being defined by a the tilde code containing "\".  
  1008.      Never use "\" if the line contains ANYTHING other than a single tilde 
  1009.      code sequence.  
  1010.  
  1011.  
  1012.      - Comments
  1013.  
  1014.           When you want to place comments into your form, but you don't 
  1015.      want them to print, begin each with ~{ and end each with }~.  This 
  1016.      will allow you to make notes in each form about why you did such and 
  1017.      such.  Example:
  1018.  
  1019.                ~{The following lines contain the client's address}~
  1020.                
  1021.      The line shown above will not be printed when the forms is prepared.  
  1022.      A comment must always be the last (if not the only) item found on a 
  1023.      line.
  1024.  
  1025.  
  1026.      - Postponing Printing
  1027.  
  1028.           Normally, when you access PopForm, you will want a form printed 
  1029.      at once.  Thus, when you type in the name of a form, printing normally 
  1030.      begins immediately.
  1031.  
  1032.           But it may occasionally be more convenient for you to grab data 
  1033.      from one screen, then another, then another (and so on), AND THEN beg-
  1034.      in printing.  This may be accomplished in two different ways. 
  1035.  
  1036.           One is for you to simply press ALT-P until "PCUE" (the PrintCUE) 
  1037.      appears in the upper right corner of PopForm's screen.  If you do this 
  1038.      before you select a form to "print", all output will be directed, not 
  1039.      to the printer, but to the PrintCUE.  Once you've sent your last form 
  1040.  
  1041.  
  1042. PUTTING IT ALL TOGETHER                  18
  1043.  
  1044.  
  1045.  
  1046.  
  1047.      to the PrintCUE, press Ctrl-P to actually print all the stuff you've 
  1048.      been saving up.
  1049.  
  1050.           The other way to postpone printing is for you to place the SENDTO 
  1051.      code into your form.  Example:
  1052.  
  1053.                               ~SENDTO myfile~
  1054.                               This goes to the "myfile" file
  1055.                               ~SENDTO LPT3~
  1056.                               This goes to the printer 
  1057.  
  1058.      When PopForm encounters the top line's code, it will immediately re-
  1059.      direct its output to the "myfile" file, instead of to the printer.  
  1060.      The next line would, therefore, be sent to "myfile".  The third line, 
  1061.      however, directs PopForm to begin printing again (through port LPT3, 
  1062.      in this case).
  1063.  
  1064.           After using the SENDTO code, PopForm will assume that, when you 
  1065.      press Ctrl-P, you will want to print the file specified by SENDTO, not 
  1066.      the standard PrintCUE.
  1067.  
  1068.  
  1069.      - Multi-screen Forms
  1070.  
  1071.           You may occasionally have forms that pull their data from two or 
  1072.      more screens.  Therefore, PopForm needs a facility to allow you to 
  1073.      temporarily exit, call up another screen, and then resume processing 
  1074.      the form.  ~NEWSCREEN x~ is the answer.  It tells PopForm to display 
  1075.      message x, wait for you to press a key, and then temporarily exit.  
  1076.      After you've called up another screen of data and pressed PopForm's 
  1077.      hotkey, the program will pick up where it had left off just before 
  1078.      exiting.  If x is missing, PopForm will exit without displaying a mes-
  1079.      sage or waiting for you to press a key.  Examples:
  1080.  
  1081.           ~NEWSCREEN~
  1082.           ~NEWSCREEN "Press ENTER, get new screen, and come back"~
  1083.  
  1084.           The first line would cause PopForm to exit without displaying a 
  1085.      message.  The second line would display the message in quotes, wait 
  1086.      for either the ENTER or ESC key to be pressed, and then exit.  If you 
  1087.      pressed the ESC key, PopForm would exit without expecting you to call 
  1088.      up another screen; when you pressed the hotkey again, PopForm WOULD 
  1089.      NOT pick up where it left off.  The ESC key, therefore, allows you to 
  1090.      break out of a repetitive cycle.  
  1091.  
  1092.  
  1093.      - Centering
  1094.  
  1095.           If you want the data picked off the screen to be centered on the 
  1096.      printed page, you may find the ~CENTER x~ code useful.  When PopForm 
  1097.      encounters that code, it primes itself to center ALL data picked off 
  1098.      the screen until it encounters a ~CENTER OFF~ code.  x is the column 
  1099.  
  1100.  
  1101. PUTTING IT ALL TOGETHER                  19
  1102.  
  1103.  
  1104.  
  1105.  
  1106.      on which the data will be centered.
  1107.  
  1108.  
  1109.      - Margins
  1110.  
  1111.           PopForm normally sends to the printer exactly what is contained 
  1112.      in the form being printed.  If you'd like PopForm to add margins of 
  1113.      its own, you should use the ~MARGINS t,l,b,r~ code.  t,l,b, and r are 
  1114.      not really margins at all.  Rather, they are the top, left, bottom, 
  1115.      and right lines and columns at which printing will begin and end.
  1116.  
  1117.           t is the line on which you wish to begin printing on each page.  
  1118.      l is the column at which you want to begin printing each line.  b is 
  1119.      the line to which you wish to continue printing each page before a new 
  1120.      sheet is automatically fed.  r is the approximate column to which you 
  1121.      wish to continue printing each line if you're using Word Wrap.
  1122.  
  1123.           t and b must be numbers between 1 and 255.  l and r should be 
  1124.      between 1 and the maximum number of columns your printer is set to 
  1125.      print, minus 5.  For example, if you printer is in 80-column mode, r 
  1126.      must be no more than 75.  Remember, r has no effect unless Word Wrap 
  1127.      is ON.
  1128.  
  1129.           PopForm's defaults are: t=1, b=255, l=1, and r=255.  If you des-
  1130.      ignate a zero for any of these items, PopForm will assume that item to 
  1131.      be unimportant and reset it to its default value.  When a default val-
  1132.      ue is set, PopForm gives up control over that item.
  1133.  
  1134.  
  1135.      - Headers and Footers
  1136.  
  1137.           If you want each page to have a header or footer, use the 
  1138.      ~HD x,y~ or ~FT x,y~ code.  y is the header or footer you want printed 
  1139.      at the top or bottom of each page, and x is the minimum number of 
  1140.      blank lines you need between the header of footer and the rest of the 
  1141.      text on the page.  If you want a page number printed within the header 
  1142.      of footer, use the # character.  The maximum number of characters 
  1143.      allowed in a header or footer is 74.  Example:
  1144.  
  1145.                                  ~FT 3,Page #~ 
  1146.  
  1147.      This will cause PopForm to place a footer at the bottom of each page, 
  1148.      three lines below the main text that's printed.  If the page being 
  1149.      printed were page 21, the footer would say, "Page 21".
  1150.  
  1151.  
  1152.      - Word Wrap
  1153.  
  1154.           Sometimes, the information to be grabbed from the screen and 
  1155.      placed into the form being printed will not be of a predictable 
  1156.      length.  That might make creating a form difficult, since you may not 
  1157.      know how much space to allocate to variable-length data.
  1158.  
  1159.  
  1160. PUTTING IT ALL TOGETHER                  20
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.           Word wrap may help you here.  When it's turned on, PopForm will 
  1167.      completely ignore all line feeds contained in the form.  Instead, 
  1168.      PopForm will decide for itself when it needs to skip down to the 
  1169.      next line.  In order for this to work, you should place a ~MARGINS 
  1170.      t,l,b,r~ code just before turning on Word Wrap with the ~WRAP ON~ 
  1171.      code.  If you don't, PopForm will consider the left margin to be 1 and 
  1172.      the right one to be 255.  
  1173.  
  1174.           To turn Word Wrap off, place a ~WRAP OFF~ code into the form at 
  1175.      the appropriate place.  If you want to change margins at that point, 
  1176.      you should place a ~MARGINS t,l,b,r~ code right after it.
  1177.  
  1178.           Word Wrap's operation is fairly straightforward.  When the line 
  1179.      that PopForm is printing comes within 9 characters of the right margin 
  1180.      you've designated, it begins looking for a blank space or hyphen.  As 
  1181.      soon as one is encountered, PopForm sends a carriage return and line 
  1182.      feed to the printer.  If no blank space or hyphen is encountered be-
  1183.      fore the line is 5 characters LONGER than the right margin you speci-
  1184.      fied, PopForm will arbitrarily break the word and insert a hyphen.  
  1185.      Therefore, PopForm may occasionally break long words (>14 characters) 
  1186.      at awkward points.  So, don't use big words too often in the forms 
  1187.      that PopForm will print.
  1188.  
  1189.           Remember, PopForm ignores all line feeds contained in the form 
  1190.      it's printing under Word Wrap's control.  So how can you FORCE PopForm 
  1191.      to issue a line feed and carriage return, despite the fact that Word 
  1192.      Wrap is on?  Answer:  the ~<~ code.  Just place a ~<~ wherever you 
  1193.      want.  For example, if you want a blank line between paragraphs, each 
  1194.      paragraph should be preceded by two ~<~ codes.  Take a look at 
  1195.      LETTER.FRM to see how these codes are used.
  1196.  
  1197.  
  1198.      - Printer Codes
  1199.  
  1200.           There may be times when you need to switch from 1/6" to 1/8" 
  1201.      spacing, and back.  You may need to change fonts in the middle of a 
  1202.      page, or even in mid-line.  Or you may occasionally need to underline 
  1203.      what's printed.  In order to handle these changes, you'll have to 
  1204.      utilize PopForm's special printer control tilde codes.  And, of 
  1205.      course, you'll also have to be familiar with the decimal code se-
  1206.      quences recognized by your printer. 
  1207.  
  1208.           If you want to place printer control codes into your forms, enter 
  1209.      each as a series of 3-digit numbers.  Each such sequence must begin 
  1210.      with "~PRINTCODE ", and end it with a tilde.  Assume that the con-
  1211.      trol code you want to send your printer is "27 69" (ESC E).  To send 
  1212.      that code, you should actually place into your form this character 
  1213.      sequence:
  1214.  
  1215.                               ~PRINTCODE 027069~
  1216.   
  1217.  
  1218.  
  1219. PUTTING IT ALL TOGETHER                  21
  1220.  
  1221.  
  1222.  
  1223.  
  1224.      Note that "027069" is used, not "2769", "27 69" or "27,69".  Use se-
  1225.      quences consisting of three-digit numbers only.  See CHECK.FRM for an 
  1226.      example of this code sequence.  The control code sent by CHECK.FRM is 
  1227.      designed to place an Epson-compatible printer into the proper mode to 
  1228.      print IBM graphic characters.
  1229.  
  1230.  
  1231.      - Graphics
  1232.  
  1233.           You may occasionally need to place graphics symbols into your 
  1234.      form.  Though this may be an unfamiliar chore, you'll find your word 
  1235.      processor fully capable of handling it.  The trick is to figure out 
  1236.      how, so dig out that manual and look.  
  1237.  
  1238.           Some word processors will display graphics symbols as odd-looking 
  1239.      characters.  Don't worry, when they're printed out, they'll look just 
  1240.      fine -- assuming, of course, that your printer has been placed into its 
  1241.      graphics printing mode.  Some printers can't handle graphics at all.  
  1242.      Some will print graphics in their default modes.  And others, like the 
  1243.      Epson-compatibles, are capable of graphics, but need to be given the 
  1244.      proper command to go into that mode.  That's why CHECK.FRM's first 
  1245.      line contains a printer control code sequence to place Epson-compat-
  1246.      ible printers into graphics mode.
  1247.  
  1248.  
  1249.      - Date, Day of Week, Time
  1250.  
  1251.           If your form contains ~DATE~, ~WEEKDAY~, or ~TIME~, the compu-
  1252.      ter's current date, day of the week, or time will be be substituted at 
  1253.      the appropriate spot on the form as it prints.
  1254.  
  1255.  
  1256.      - Keeping up with Totals
  1257.  
  1258.           PopForm will print any number you wish, whether it's contained in 
  1259.      the form being printed or on the screen.  But what if you need the 
  1260.      program to keep tabs on running totals that accumulate during the 
  1261.      processing of many screens'-worth of data?  That's what the NUMx 
  1262.      variables are for.  There are nine of them, NUM1...NUM9.  They are all 
  1263.      set to zero with each new form that you prepare.  From that starting 
  1264.      point, each can be adjusted as you wish by performing mathematical 
  1265.      operations on it.  And each can be printed easily.  Here are some 
  1266.      examples:
  1267.  
  1268.                ~NUM1+10~       adds 10 to NUM1
  1269.                ~NUM2*3~        multiplies NUM2 by 3
  1270.                ~NUM8/4~        divides NUM8 by 4
  1271.                ~NUM8-NUM4~     subtracts NUM4 from NUM8 and keeps the
  1272.                                result in NUM8
  1273.                ~NUM5~          prints NUM5
  1274.                ~NUM5CC~        clears NUM5 (reduces it to zero)
  1275.  
  1276.  
  1277.  
  1278. PUTTING IT ALL TOGETHER                  22
  1279.  
  1280.  
  1281.  
  1282.  
  1283.      What about ~NUM5=90~?  That won't work!  To give NUM5 a value of 90, 
  1284.      you should use two operations: ~NUM5CC~~NUM5+90~.  The first reduces 
  1285.      NUM5 to zero, and the next adds 90 to it.
  1286.  
  1287.           If no mathematical operation is designated, the tilde code con-
  1288.      taining a NUMx variable tells PopForm to simply print the variable; 
  1289.      otherwise, PopForm is being told to perform an operation.  When per-
  1290.      forming mathematical operations the first operator must always be the 
  1291.      NUMx variable.
  1292.  
  1293.           The precision with which NUMx variables will be printed may be 
  1294.      set with the DECIMALS code.  Examples
  1295.           
  1296.                ~DECIMALS 3~     causes PopForm to NUMx variables to 3                            
  1297.                                 decimal places
  1298.                ~DECIMALS 0~     no decimal places will be printed.
  1299.  
  1300.      PopForm's default is DECIMALS 2.
  1301.  
  1302.  
  1303.      - Alphanumeric variables
  1304.  
  1305.           PopForm will print any alphanumeric string you wish, whether it's 
  1306.      contained in the form being printed or on the screen.  But what if you 
  1307.      need the program to remember a particular word or phrase and manipu-
  1308.      late it later.  That's what the WRDx variables are for.  There are 
  1309.      nine of them, WRD1...WRD9.  They all start out blank when you begin 
  1310.      preparing a form.  From that starting point, each can be adjusted as 
  1311.      you wish by performing basic operations on it.  And each can be prin-
  1312.      ted easily.  Here are some examples:
  1313.  
  1314.                ~WRD1+"hello"~  adds "hello" at the end of WRD1
  1315.                ~WRD1-"hello"~  deletes "hello" from WRD1
  1316.                ~WRD5~          prints WRD5
  1317.                ~WRD5CC~        clears WRD5 (makes WRD5 blank)
  1318.  
  1319.      What about ~WRD5="hello"~?  That won't work!  To make WRD5 equal to 
  1320.      "hello", you should use two operations: ~WRD5CC~~WRD5+"hello"~.  The 
  1321.      first makes WRD5 blank, and the next adds "hello" to it.
  1322.  
  1323.           If no operation is designated, the tilde code containing a WRDx 
  1324.      variable tells PopForm to simply print the variable; otherwise, Pop-
  1325.      Form is being told to perform an operation.  When performing opera-
  1326.      tions the first operator must always be the WRDx variable.
  1327.  
  1328.  
  1329.      - Feeding a new sheet of paper
  1330.  
  1331.           Whenever PopForm encounters the code, ~NEWPAGE~, it will send 
  1332.      your printer the form feed command.  If you want a new page to be fed 
  1333.      only if the last line printed is within x lines of the bottom "margin" 
  1334.      (see the Margins section above), the code should be, ~NEWPAGE x~, 
  1335.  
  1336.  
  1337. PUTTING IT ALL TOGETHER                  23
  1338.  
  1339.  
  1340.  
  1341.  
  1342.      where x is a number.
  1343.  
  1344.  
  1345.      - Pausing for keyboard entry     
  1346.  
  1347.           If, in the middle of a form, you want PopForm to ask you 
  1348.      something, use the INPUT code.  Whatever you enter at the keyboard 
  1349.      will be placed into the printout.  Consider the a form consisting of 
  1350.      one line:
  1351.  
  1352.                ~TIME~, ~DATE~         ~INPUT "Your Name: "~
  1353.  
  1354.      In this example, PopForm would print the computer's time and date.  
  1355.      Then, it would print several blank spaces, pause, and display the 
  1356.      phrase, "Your Name: ", on the screen.  When you entered your name, 
  1357.      PopForm would print it at the point at which it had just paused.  If 
  1358.      the command had been ~[20]INPUT "Your Name: "~, PopForm would have 
  1359.      printed the first 20 characters of your name (if you name were fewer 
  1360.      than 20 characters, PopForm would have padded it with spaces).
  1361.  
  1362.           The phrase you specify with the INPUT code will be displayed on 
  1363.      the third line of the PopForm window.  If a one-line phrase isn't 
  1364.      enough, you should use the ~WRITELN x~ code just before INPUT.  
  1365.      WRITELN will display phrase x on the first line of the window, unless 
  1366.      that line has already been filled by a previous WRITELN instruction 
  1367.      (in which case phrase x will be displayed on the second line).  By 
  1368.      placing two WRITELN codes just before an INPUT code, you can display a 
  1369.      three-line prompt.
  1370.  
  1371.  
  1372.      - Blocking off text
  1373.  
  1374.           If you want the ability to highlight a certain block off text on 
  1375.      the screen and send it to the printer, use the ~BLOCK~ code.  When 
  1376.      PopForm encounters that code, it will place a flashing block-type cur-
  1377.      sor at the top-left corner of the screen.  Use the arrow keys to move 
  1378.      the cursor to the point that you wish to designate as the top-left 
  1379.      corner of the block to be printed and press the space bar.  Then, move 
  1380.      to the bottom-right corner of the block.  As you move, you'll notice 
  1381.      that the block is highlighted.  Hitting the Enter key will cause the 
  1382.      highlighted text to be sent to the printer.
  1383.  
  1384.           If you want the text that's printed to be lined up at a certain 
  1385.      left margin, be sure to put a ~MARGINS code (see the Margins section) 
  1386.      just before the ~BLOCK code.  Then, reset the margins by placing an-
  1387.      other ~MARGINS code after the ~BLOCK code.  Example:
  1388.  
  1389.        ~MARGINS=1,10,255,255~     sets default margins, except left margin
  1390.        ~BLOCK~
  1391.        ~MARGINS=1,1,255,255~      sets default margins all around
  1392.  
  1393.  
  1394.  
  1395.  
  1396. PUTTING IT ALL TOGETHER                  24
  1397.  
  1398.  
  1399.  
  1400.  
  1401.      - Printing another file
  1402.  
  1403.           When PopForm encounters the code, ~FILE x~, it will cease 
  1404.      printing the current form and begin printing file x.  Example:
  1405.  
  1406.                             ~FILE 2d.fil~
  1407.  
  1408.      This code would tell PopForm to immediately find the file named, 
  1409.      "2D.FIL" and begin printing it.  If one file sends PopForm to another, 
  1410.      the only way to get back is to have the second file send PopForm back 
  1411.      to the first.
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455. PUTTING IT ALL TOGETHER                  25
  1456.  
  1457.  
  1458.  
  1459.  
  1460.      FOR PROGRAMMERS ONLY
  1461.  
  1462.           PopForm has some simplistic programming features that allow it to 
  1463.      react to certain conditions.  Let's assume that you want the program 
  1464.      to read the character at a certain screen location and compare it to a 
  1465.      character that you define.  If the characters match (or DON'T match, 
  1466.      if you prefer), you can have PopForm stop printing, skip down to a 
  1467.      certain line (identified by a LABEL), and then continue printing.
  1468.  
  1469.           All this can be done by using IF in conjunction with the GOTO, 
  1470.      GOSUB..RETURN, and DO..UNTIL, tilde codes.  This version of PopForm 
  1471.      allows GOSUBs and DO loops to be nested up to three levels deep.
  1472.  
  1473.           You may notice that, as PopForm is sending a form to the printer, 
  1474.      it's pop-up box rapidly flashes on and off.  What's happening is this:  
  1475.      When a GOTO, GOSUB, or DO statement is being executed, PopForm needs 
  1476.      to move to different locations in the form.  As it does so, it dis-
  1477.      plays a message explaining what it's doing.  When it finds the proper 
  1478.      location, the screen is cleared, so that PopForm may read it.  All 
  1479.      this may happen very quickly, especially if PopForm is working with 
  1480.      small files.   If, for some reason, PopForm can't find the proper loc-
  1481.      ation, it will appear to "hang up".  In this case, all you normally 
  1482.      have to do is to press the ESC key.  Then, look at the file that Pop-
  1483.      Form was accessing and try to fix it's programming logic.
  1484.  
  1485.  
  1486.      - Labels
  1487.  
  1488.           Labels mark important points in your file.  They can be of great 
  1489.      benefit when used in conjunction with the IF, GOTO, and GOSUB state-
  1490.      ments.  If, for instance, certain characters or values appear on your 
  1491.      screen, you might want PopForm to skip to a certain point in the file 
  1492.      and resume printing.  If the screen contains other data, you might 
  1493.      want to skip to another section (or even to another file, altogether).  
  1494.  
  1495.  
  1496.      - IF statements
  1497.  
  1498.           IF statements do comparisons.  When PopForm encounters an IF 
  1499.      statement, it reads the string of characters between the "IF" and the 
  1500.      comparison expression ( =, <, >, or <> ).  It makes the appropriate 
  1501.      comparison between that string and the string of characters following 
  1502.      the comparison expression.  If, and only if, the comparison is true 
  1503.      (eg: equal, if you specify =, or not equal if you specify <>), the 
  1504.      NEXT FOLLOWING tilde code will be executed.  If the comparison is not 
  1505.      true (eg: not equal if you specify =, or equal if you specify <>), the 
  1506.      following tilde code will be SKIPPED.  Examples:
  1507.  
  1508.           ~IF 1=NUM2~~GOTO END~   Now is the time...     
  1509.                                     If NUM2=1, then PopForm will go to
  1510.                                     the position in the form identified
  1511.                                     by an END label (~LABEL END~).  Other-
  1512.  
  1513.  
  1514. FOR PROGRAMMERS ONLY                     26
  1515.  
  1516.  
  1517.  
  1518.  
  1519.                                     wise, it will continue on to print,
  1520.                                     "   Now is the time...". 
  1521.  
  1522.           ~IF "david"<>(RC-0512,5)~~GOSUB DAVE~  
  1523.                                     If the five characters located at 
  1524.                                     screen coordinates 0512 do not match
  1525.                                     "david", then PopForm will execute the
  1526.                                     subroutine beginning at ~LABEL DAVE~.
  1527.                                     (see the GOSUB discussion below) 
  1528.  
  1529.           ~IF ESC=NEWSCREEN "Press a Key: "~~GOTO END~  
  1530.                                     If, when the NEWSCREEN function was 
  1531.                                     displaying, "Press a Key: ", you 
  1532.                                     pressed the ESC key, PopForm would go 
  1533.                                     to the END label.
  1534.  
  1535.           If the first string of characters to be compared is a number, 
  1536.      PopForm will attempt numerical comparison.  If it's a date, it will 
  1537.      attempt to compare dates.  Otherwise, it will compare words or phrases 
  1538.      (ignoring capitalization).  PopForm recognizes dates in only three 
  1539.      formats, demonstrated as follows:
  1540.  
  1541.           12 September 1992:    12 SEP 92 (day month year)
  1542.                                           (use first 3 letters of month)
  1543.                                 9/12/92   (month/day/year) 
  1544.                                 9-12-92   (month-day-year)
  1545.  
  1546.  
  1547.           Whenever PopForm encounters an IF statement, it knows that it 
  1548.      needs to perform a comparison of TWO, and ONLY TWO items.  If one of 
  1549.      the things to be compared is a known quantity (such as the ESC key, or 
  1550.      a particular word or number for which you're looking), that item must 
  1551.      appear to the LEFT of the operator ( =, <>, <, > ).  The variable 
  1552.      against which you're comparing the known quantity must always be to 
  1553.      the right of the operator.  If two variables are being compared, place 
  1554.      to the left of the operator the one that does NOT require PopForm to 
  1555.      pick data from the screen or from your keyboard.  If both (or neither) 
  1556.      items are variables requiring keyboard or screen scanning, the order 
  1557.      is not important.  Finally, any attempt to compare items that can't 
  1558.      logically be compared may have unpredictable results.
  1559.  
  1560.  
  1561.      - GOSUB routines
  1562.  
  1563.           When PopForm encounters ~GOSUB x~ code, it immediately finds the 
  1564.      position in the file identified as ~LABEL x~.  It executes everything 
  1565.      between that point and the next ~RETURN~ code.  Then, it returns to the
  1566.      spot in the file just following the ~GOSUB x~ code and continues its 
  1567.      way through the file.  Example:
  1568.  
  1569.                     This is the beginning.
  1570.                     ~GOSUB FILLER~
  1571.  
  1572.  
  1573. FOR PROGRAMMERS ONLY                     27
  1574.  
  1575.  
  1576.  
  1577.  
  1578.                     And now I'm done.
  1579.                     ~GOTO END~              
  1580.                     ~LABEL FILLER~
  1581.                     Here's some filler material.
  1582.                     Now, I'll return.
  1583.                     ~RETURN~
  1584.                     ~LABEL END~
  1585.  
  1586.      This sequence would cause the following to be printed:
  1587.                     
  1588.                     This is the beginning.
  1589.                     Here's some filler material.
  1590.                     Now, I'll return.
  1591.                     And now I'm done.
  1592.  
  1593.  
  1594.      - DO loops
  1595.  
  1596.           Each DO loop maintains its own counter, which is initialized at 
  1597.      a value of one when the DO loop begins execution.  Whenever PopForm 
  1598.      encounters a ~DO~ code, it will continue its work until it reaches an 
  1599.      ~UNTIL COUNT x~ code.  Then, it will increase its counter by 1 and 
  1600.      compare that value against x.  If the counter is less than or equal to 
  1601.      x, PopForm will then go to ~DO~ code and begin the process again.  
  1602.      When the counter is finally greater than x, PopForm will break out of 
  1603.      the DO loop.
  1604.  
  1605.           As DO loops are processing, you may ask PopForm to do certain 
  1606.      things, depending upon what the counter's current value is.  Just use 
  1607.      an IF code to do so.  Example:
  1608.  
  1609.           ~IF 2=COUNT~~GOTO TWO~...counter not equal to 2    
  1610.                                       If the counter's value is 2, PopForm 
  1611.                                       will skip immediately to the file 
  1612.                                       position identified by ~LABEL TWO~; 
  1613.                                       otherwise, it will print,"...counter
  1614.                                       not equal to 2".
  1615.  
  1616.      Note that COUNT must always be the SECOND value compared, never the 
  1617.      first.  You may execute GOSUB routines that are outside the DO loop, 
  1618.      but all GOTO's contained within a DO loop must refer to labels that 
  1619.      are also within the DO loop.
  1620.  
  1621.  
  1622.      - Programming Example
  1623.  
  1624.           Programming is potentially an extremely frustrating endeavor.  
  1625.      You'll undoubtedly have to do a lot of trial and error work when you 
  1626.      work on even mildly complicated forms.  But if you stick with it, 
  1627.      you'll be glad that you did. 
  1628.  
  1629.           Take a look at PROGRAM.FRM, FEDEX.FRM, and WILL.FRM.  Copy them 
  1630.  
  1631.  
  1632. FOR PROGRAMMERS ONLY                     28
  1633.  
  1634.  
  1635.  
  1636.  
  1637.      to into files with different names and have fun experimenting with the 
  1638.      copies.  Also copy TESTDATA and WILLDATA to other files, so that you 
  1639.      can experiment with them, too.  Be sure to use only an ASCII-type 
  1640.      editor, or you'll be wasting your time.
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691. FOR PROGRAMMERS ONLY                     29
  1692.  
  1693.  
  1694.  
  1695.  
  1696.      PREPARING LONG FORMS
  1697.  
  1698.           First, write your form without any codes.  When it's done, go 
  1699.      through it again, this time substituting codes where appropriate.  
  1700.  
  1701.           If the form has lots of variables to be plugged in by PopForm, it 
  1702.      is recommended that you direct PopForm to use Word Wrap.  Turn it on 
  1703.      and set your margins at the beginning of the form.  And be sure to use 
  1704.      the ~<~ code wherever you REQUIRE a line feed and carriage return; 
  1705.      otherwise, PopForm will try to place everything into the same para-
  1706.      graph.
  1707.  
  1708.           As you write your form with your word processor, make sure that 
  1709.      you don't break words with hyphens at the end of lines.  When PopForm 
  1710.      sends the form to the printer, each line containing a variable my end 
  1711.      up with a length different from what you had anticipated.  A word 
  1712.      that you had originally broken with a hyphen at the end of a line may 
  1713.      end up in the middle of a line on the printed sheet.
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750. PREPARING LONG FORMS                     30
  1751.  
  1752.  
  1753.  
  1754.  
  1755.      COMMON ERRORS
  1756.  
  1757.      - Improper vertical spacing between lines.  This is particularly a 
  1758.      problem when you're creating a complicated form that uses lots of 
  1759.      programming logic.  The problem is that you aren't thinking through 
  1760.      the form's process well enough.  There may be places where PopForm 
  1761.      will issue a line feed when you don't want it to.  Locate those spots
  1762.      and place a ~\~ at the end of the line.  If PopForm ISN'T issuing 
  1763.      line feeds where you expect, use the ~<~ code at the end of each line 
  1764.      where you want the line feed.
  1765.  
  1766.      - Improper horizontal spacing on a line.  You probably haven't antici-
  1767.      pated the lengths of an item that PopForm will plug into the form.  
  1768.      As a result, subsequent printing on that line will not be aligned 
  1769.      properly.  Try using the ~\~ and ~+~ codes to join and overwrite 
  1770.      lines.  Make a test file to experiment with these codes.  Then, when 
  1771.      you understand how they work, place them into a "real" form.
  1772.  
  1773.      - Failure to place a tilde (~) at each end of a code.  This causes all 
  1774.      sorts of problems, as PopForm attempts to decipher everything between 
  1775.      two tildes.
  1776.  
  1777.      - Omission of the word LABEL from codes intended as labels.
  1778.  
  1779.      - Failure to end a subroutine (called by GOSUB) with a RETURN code.  
  1780.  
  1781.      - Failure to end a DO loop with an UNTIL statement.
  1782.  
  1783.      - Failure to follow each code's recommended syntax.
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809. COMMON ERRORS                            31
  1810.  
  1811.  
  1812.  
  1813.  
  1814.      CUSTOMIZING POPFORM
  1815.  
  1816.           To customize PopForm, you need to load the program by entering 
  1817.      the following at the DOS prompt:
  1818.           
  1819.                              PopForm $08xxxx
  1820.  
  1821.      where each "x" represents a letter or number, as explained in the 
  1822.      following sections.
  1823.  
  1824.           Note that you need to make this special entry only once.  From 
  1825.      then, on, PopForm may be loaded merely by entering "PopForm" at the 
  1826.      DOS prompt.
  1827.  
  1828.      HOTKEY 
  1829.  
  1830.           PopForm's default hotkey is ALT-F.  To change it, substitute for 
  1831.      the third "x" the new key you wish to use in combination with the ALT 
  1832.      key.  Also substitute for the first two x's the scan code for that 
  1833.      key.  You'll need to consult with a DOS manual to find a complete list 
  1834.      of scan codes, but here are a few:  
  1835.  
  1836.                Q=10  W=11  E=12  R=13  T=14  Y=15  U=16  I=17  O=18  
  1837.                P=19  A=1E  S=1F  D=20  F=21  G=22  H=23  J=24  K=25  
  1838.                L=26  Z=2C  X=2D  C=2E  V=2F  B=30  N=31  M=32
  1839.  
  1840.      Example:  To make ALT-Q the hotkey, you should enter "PopForm 
  1841.      $0810Q..." at the DOS prompt.  Here, "Q" takes the place of the third 
  1842.      "x", and its scan code (10) takes the place of the first two.
  1843.  
  1844.           To use the CTRL key in place of the ALT key, substitute "$04" for 
  1845.      "$08".  The Left Shift key is $02, and Right Shift key is $01.
  1846.  
  1847.      COLORS
  1848.  
  1849.           You may designate the primary colors used by PopForm.  The fore-
  1850.      ground color's code substitutes for the fifth "x", while the back-
  1851.      ground is contained at the sixth position.  The color codes you may 
  1852.      use are: 
  1853.  
  1854.                 0 Black     1 Blue     2 Green   3 Cyan            
  1855.                 4 Red       5 Magenta  6 Brown   7 Light Gray      
  1856.  
  1857.  
  1858.      DEFAULT SETTING
  1859.  
  1860.      PopForm's default customizing instruction is, "$0821F70":
  1861.              21=the scan code of the F key used (with ALT) to invoke PopForm
  1862.              F =the F key
  1863.              7 =light gray (foreground color)
  1864.              0 =black (background)
  1865.  
  1866.  
  1867.  
  1868. CUSTOMIZING POPFORM                      32
  1869.                            THE "POWER OFFICE" LINE-UP
  1870.  
  1871. Each unique program in this series requires a hard disk-equipped IBM-compatible 
  1872. PC with 512K of memory.  The following paragraphs contain brief descriptions.
  1873.  
  1874.      TickleX    --> the ultimate  in scheduling/planning/docket control
  1875.      MT-Tracker --> TickleX's scheduling power, plus client management 
  1876.      BillPower  --> time & billing with totally integrated general ledger
  1877.      RAMdesk    --> pop-up network message system, calculator, scheduler,
  1878.                     phone directory, time/work/expense log, data base 
  1879.      PopForm    --> pop-up form printing program.
  1880.      Nifty      --> combination menu and pop-up help system
  1881.  
  1882.  
  1883. BILLPOWER and BILLPOWER PLUS
  1884.  
  1885.      BillPower is a system designed to relieve you of the drudgery involved  in 
  1886. billing.   In a nutshell, it will track the time you work on professional  mat-
  1887. ters,  keep up with your receipts and disbursements, and calculate  the  amount 
  1888. owed  by  each client.  And it will automatically prepare  informative  monthly 
  1889. statements  for all your clients.  All on either a stand-alone or pop-up basis!
  1890.  
  1891.      Engineered exclusively for the small firm, this innovative software offers 
  1892. a  rare combination of power and ease of use at a fair price.  Unlike  programs 
  1893. that  attempt to electronically emulate ancient manual  accounting  procedures, 
  1894. BillPower  is designed to capitalize upon the power of your computer.   If  you 
  1895. are  an  "old hand" at bookkeeping, then open your mind to a  real-time  system 
  1896. which  immediately updates all balances at the time an entry is made; one  that 
  1897. does  not require periodic batch postings or annual close-outs; one  that  pro-
  1898. vides a convenient method for correcting erroneous entries; a system that never 
  1899. erases  old data in the interest of consolidation.  You'll find both  BillPower  
  1900. and BillPower Plus to be advanced products.
  1901.  
  1902.      --> BillPower ($100):  time, billing, & bookkeeping for firms  with  
  1903.          up to  three timekeepers -- includes bank  account  management,  
  1904.          income-expense reports, balance sheets, & several bill formats.
  1905.                 
  1906.      --> BillPower Plus ($150):  time,  billing, & bookkeeping for  firms 
  1907.          with up to fifteen timekeepers -- builds upon BillPower's   fea-
  1908.          tures,  adding the abilities to keep extensive indexed memos  on     
  1909.          any subject, maintain notes on thousands of people, conduct con-
  1910.          flict of interest checks, prepare mailing labels, and more. 
  1911.  
  1912.      BillPower   can prepare several types of reports.  Whenever  you   request  
  1913. one,  you will be presented with a screen listing the parameters by  which  you 
  1914. can choose the information to be included.  After you have selected the  appro-
  1915. priate   parameters,  BillPower will hunt through its data base  for   informa-
  1916. tion  meeting your specifications.  The report may be sent to the  screen,  the 
  1917. printer or to a disk file. 
  1918.  
  1919.      Finally, while other time and billing programs may offer "links" to exter-
  1920. nal accounting software, BillPower completely integrates its bookkeeping  func-
  1921. tions into the rest of the program.  In fact, BillPower Plus can simultaneously
  1922. update  affected G/L accounts (as well as a client's balance and  aged  receiv-
  1923. ables) at the time that a disbursement or receipt is entered.  This "real-time" 
  1924. approach to bookkeeping, virtually unprecedented in a time and billing program, 
  1925. saves you the time you would otherwise spend making duplicate G/L entries, pos-
  1926. ting transactions, and/or transferring files from one program to another.  With 
  1927. BillPower  Plus,  a SINGLE entry can handle all the updating that needs  to  be 
  1928. done.  No other program offers such a degree of integration.  NONE!
  1929.  
  1930.  
  1931. TICKLEX
  1932.  
  1933.      TickleX  ($50) is a tickler/calendar program that will keep track of  your 
  1934. appointments  and deadlines, print your itinerary at the beginning of each  day 
  1935. day,  keep  a "to-do" list, and chart the projected course of each  matter  you 
  1936. handle.   It will also schedule trips and vacations, print weekly  and  monthly 
  1937. calendars, and beep at you when something needs doing.  Stand-alone or POP-UP.
  1938.  
  1939.      TickleX  is  unusual in its ability to dynamically link reminders  to  ap-
  1940. pointments and deadlines.  Assume, for example, that you have a very  important 
  1941. meeting  scheduled for 15 August.  As with other programs, you could  establish 
  1942. reminders  several days or weeks in advance to allow adequate  preparation  for 
  1943. the meeting.  For the purposes of this example, let's say that you have entered 
  1944. a  reminder  one week in advance and another two weeks in advance.   Now,  what 
  1945. happens if the meeting is moved forward one week to 22 August?  Again, all tic-
  1946. kler  programs  would  allow  you to reschedule  it.   But  TickleX  will  also 
  1947. automatically  update the two reminders, moving each one week forward in  order 
  1948. to maintain the original reminder intervals.  Other programs would require  you 
  1949. to  search  for each reminder, delete it, and then enter it  again  on  another 
  1950. date.  This TickleX exclusive is an absolute "must" for offices that have  fre-
  1951. quent schedule changes.
  1952.  
  1953.      TickleX  is also unique in the way it handles multi-day  events.   TickleX 
  1954. allows  you  to enter an event such as a week-long trip with  just  one  entry.  
  1955. Other  programs might require a separate entry to be made for each day  of  the 
  1956. trip.   If your trip plans change, you need change only a single entry  if  you 
  1957. have TickleX.
  1958.  
  1959.      TickleX  even has built-in project planning.  No fancy charts,  mind  you.  
  1960. Just a very simplistic means of linking and updating related events.  And  it's 
  1961. completely  integrated into the TickleX system.  All project updates are  auto-
  1962. matically incorporated into the same schedule that contains appointments, dead-
  1963. lines, vacations, etc.
  1964.  
  1965.      Add to these features an attractive user interface, the ability to  attach 
  1966. extensive  notes to each scheduled event, a number of other nice  touches,  and 
  1967. TickleX comes up a winner.  Whether you're an executive looking for a  powerful 
  1968. centralized  personnel  scheduler, a busy entrepreneur needing  an  easy-to-use 
  1969. tickler system, or a lawyer seeking the ultimate docket control software, Tick-
  1970. leX  is the program for you.  There isn't a more robust scheduler available  at 
  1971. any price.  At only $50, it's a steal.  
  1972.  
  1973.  
  1974. MT-TRACKER
  1975.  
  1976.      MT-Tracker  is the ideal client tracker and scheduler.  It integrates  the 
  1977. scheduling power of TickleX with the ability to track several thousand clients, 
  1978. companies, contacts, projects, or jobs.  Also included is a note-keeping module 
  1979. that will link memos to the dates and clients to which they apply.
  1980.  
  1981.      In addition to the expected name, address, phone, and contact information, 
  1982. each client record has space for six full lines of miscellaneous data and  nine 
  1983. USER-CUSTOMIZABLE  fields.  And each note kept in the Note-keeping  module  may 
  1984. contain up to seventeen lines of information.
  1985.  
  1986.      Because  MT-Tracker is an integrated system, you can easily zip  from  one 
  1987. module  to another.  Assume, for instance, that you're looking at  Mr.  Smith's 
  1988. record, and you'd like to see everything (not just one or two items)  scheduled 
  1989. for him during the coming month.  A few keystrokes later, what you need will be 
  1990. displayed on your monitor or sent to your printer.  When you're finished  look-
  1991. ing  at the schedule, press a key to re-display Mr. Smith's record.  Notes  and 
  1992. logged events, income, and expenses are just as easily accessed.
  1993.  
  1994.      If  you're a sales representative, consultant, personal injury lawyer,  or 
  1995. anyone  else who needs to track clients, customers, or jobs, this is the  soft-
  1996. ware you've been waiting for.  Give it a try.
  1997.  
  1998.  
  1999. RAMDESK
  2000.  
  2001.      RAMdesk ($50) is a handy  "pop-up" program  that contains a number of
  2002. features useful in a business environment.  It will:
  2003.  
  2004.      --> if used on a network, instantly send and receive messages;
  2005.      --> schedule and review upcoming events on a pop-up basis,  allowing
  2006.            up to 20 alarms per day;
  2007.      --> maintain a pop-up record of income, expenses, and the time spent
  2008.            working on various projects; 
  2009.      --> provide a pop-up address and phone directory, giving you instant
  2010.            access to records on hundreds of people;
  2011.      --> provide a pop-up programmable calculator with a 50-line "tape";
  2012.      --> allow you to establish numerous pop-up databases, such as  to-do
  2013.            lists, general ledger account listings, etc.
  2014.  
  2015.      Once  RAMdesk  is  installed (it needs 7 to 45K),  it's instantly   avail-
  2016. able  at  the touch  of  a hot-key combination.  It may be called up from with-
  2017. in  most  word  processors, spreadsheets, and other primary  applications.   If 
  2018. you  also  happen to have BillPower  and  TickleX,  you'll find   that  RAMdesk 
  2019. ties  in  beautifully with them.   Whatever appointments  or  deadlines  you've 
  2020. scheduled  with RAMdesk  will  be  automatically picked up by   TickleX,  while 
  2021. BillPower  will  automatically take in the  services,  expenses,  and  receipts 
  2022. you've logged with RAMdesk.   TickleX  and  BillPower can  even assimilate  en-
  2023. tries  made into RAMdesk  by users on other  computers around the   office.  If 
  2024. the  computers are networked, the assimilation will be  handled  automatically; 
  2025. otherwise, you may use  floppy  disks to transfer the data  between each "sate-
  2026. llite" computer and the main database on another machine. 
  2027.  
  2028.  
  2029. RESEARCH
  2030.  
  2031.      ReSearch ($50) is a program designed to help you keep track  of  research, 
  2032. chronologies,  and evidence.  When you enter an item of research, you may  tell 
  2033. ReSearch  such things as the source, page, and line number where that item  can 
  2034. be  found.  You may also enter an eleven-line summary of the item and  indicate  
  2035. the subject category into which the item falls. 
  2036.  
  2037.      A prime use of this program is to create printouts of research data,  sor-
  2038. ted  alphabetically  by subject abbreviation.  Another use is to keep  tabs  on 
  2039. documents  and other evidence (who sent it, who received it, its current  loca-
  2040. tion,  etc.).  It can also be used to prepare a chronological report of  a  se-
  2041. quence  of  events which may have been entered at random into  the  data  base.  
  2042. Finally,  it can scan depositions provided to you on disk in  industry-standard 
  2043. ASCII  format and transfer verbatim text directly from the depositions  to  its 
  2044. data base.
  2045.  
  2046.  
  2047. NIFTY
  2048.  
  2049.      Nifty  ($50) is a unique program that may be used as either a pop-up  Help 
  2050. system or a DOS menu.  It combines an elegantly simple and attractive user  in-
  2051. terface  (much appreciated by the inexperienced user) with a consistent,  flex-
  2052. ible means of set-up (benefiting the system integrator). 
  2053.  
  2054.      As  a  Help system, Nifty can, at the touch of a key or two,  provide  the 
  2055. user  with  on-line assistance on any subject (assuming that  appropriate  help 
  2056. files  have been created by the person installing the system).  Since the  Help 
  2057. system is memory-resident, it may be accessed from within nearly any other  ap-
  2058. plication. 
  2059.  
  2060.      Simplicity is also the rule when Nifty is used as a Menu system.  A single 
  2061. keystroke can execute any program or read any file on the computer.  Some  menu 
  2062. systems may be easier to set up, but few provide such flexible  screen-creation 
  2063. facilities, and none are easier to use once they're installed.  With Nifty, you 
  2064. may "draw" your own menus and place into them any messages you desire.  You may 
  2065. use  either passwords or "security levels" to control access to sub-menus.  You
  2066. you may even set a timer to automatically execute any program at any time.
  2067.  
  2068.      If you know a computer novice, you know a  candidate  for using this handy
  2069. product.  And if you understand DOS paths and file extensions, you know  enough
  2070. to set up a Nifty Help or Menu system, yourself. 
  2071.